//
//  NSMutableDictionary+ZXAvoidCrash.h
//  ZXAvoidCrash
//
//  Created by 朱新明 on 2023/3/14.
//

#import <Foundation/Foundation.h>
#import "ZXAvoidCrashProtocol.h"

NS_ASSUME_NONNULL_BEGIN

@interface NSMutableDictionary (ZXAvoidCrash)<ZXAvoidCrashProtocol>

@end

NS_ASSUME_NONNULL_END


/**
*  一、会crash的初始化：同NSDictionary,用NSDictionary的。
*
 *  1. 字面值创建@{}(这种创建方式底层就是调用2中的方法)：
  id someValue = nil;
  NSDictionary *dic = @{@"1":someValue,@"2":@(1)};
 *  2.- (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects forKeys:(const KeyType <NSCopying> _Nonnull [_Nullable])keys count:(NSUInteger)cnt;
 *  3. + (instancetype)dictionaryWithObjects:(const ObjectType _Nonnull [_Nullable])objects forKeys:(const KeyType <NSCopying> _Nonnull [_Nullable])keys count:(NSUInteger)cnt;//调用2中的方法
 *  4.+ (instancetype)dictionaryWithObject:(ObjectType)object forKey:(KeyType <NSCopying>)key;//调用2中的方法

 *  5.- (instancetype)initWithObjects:(NSArray<ObjectType> *)objects forKeys:(NSArray<KeyType <NSCopying>> *)keys;//返回nil
 
* 二、 会crash的方法：
 
 - (void)setObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey;obj不能为空&key cannot be nil
 - (void)setObject:(nullable ObjectType)obj forKeyedSubscript:(KeyType <NSCopying>)key;//使用下标方式添加key-value/obj可以为空 &key cannot be nil
 - (void)removeObjectForKey:(KeyType)aKey;/key cannot be nil
**/
